In a communication system having multiple routing nodes that communicate with each other over links, a message intended to be transmitted from a source terminal to a destination terminal is routed through the system using routing tables stored in each node. Occasionally, a communication link used by a node may become incapable of sustaining communication messages. Such a link is referred to as a "failed link" and a node supporting a failed link is referred to as a "failed-link node". Although a failed link may occur due to some unforeseen event, a planned link outage may also constitute a failed link for the purposes of this description.
A failed link may have substantial consequences to the quality of service provided by the communication system. If the failed-link node continues routing as though the link did not fail (i.e., the failed-link node attempts to transmit messages across the failed link), dropped data packets and, ultimately, dropped calls will result.
In one method of avoiding dropped packets, a failed-link node modifies its own routing tables to override the current routing scheme. The failed-link node redistributes the packets to operable links (i.e., alternate routes). The failed-link node may, for example, send the data packets back to a node that originally transmitted the data packets (referred to herein as a "sending node"). Under this scheme of rerouting, a condition referred to as "continuous recirculation" may result. After receiving the data packet, the sending node may again attempt to route the data packet through the failed-link node. The failed-link node sends the data packet back to the sending node, and recirculation of the data packet may continue until the packet is dropped. The failed-link node cannot solve the dropped packets condition in isolation from its neighboring nodes.
What is needed is a method and apparatus to minimize the number of dropped packets by responding to the failed link in a rapid manner. What is further needed is a method and apparatus to prevent continuous recirculation within the system, thus maintaining connections when a link failure occurs.